一、字符串、字符数组和整型数组的创建
1、字符串的创建方法
1.1 通过引用字符数组来创建字符串
char a[]={'A','b','c','E'};
String str1=new String(a);
System.out.println(str1);
1.2 先定义后赋值
String str2;
str2="this is a book";
System.out.println(str2);
1.3 通过截取字符数组的一部分来创建字符串
char a3[]={'a','b','c','D','6','p'};
String str3=new String(a3,2,4);
System.out.println(str3);
1.4 通过类的实例化对象方法实例化一串字符来创建字符串
String str4=new String("this is a book");
System.out.println(str4);
2、创建整型数组
2.1 声明并赋值
int[] arr = {1,2,4, …};
2.2 声明数组名开辟空间并且赋值
int[] arr;
arr = new int[]{1,2,3, …};
2.3 声明数组时指定元素个数然后赋值
int[] arr1= new int[3];
还有一些具体的创建方法可以参考转化方法。
二、整型数组、字符串数组、整型数和字符串的转换
1、字符串转化为字符数组
String str="123456";
char[] c = str.toCharArray() ;
System.out.println(c);
2、字符串转化为整型数组
String str="123456";
int[] a = new int[str.length()];
for(int i=0;i<str.length();i++) {
a[i] = str.charAt(i)-'0';
}
3、字符串转化为整数型
1、int i = Integer.valueOf(str).intValue();
2、double b = Double.parseDouble(str); 将字符串转换为double型
3、int b = Integer.parseInt(str); 将字符串转换为int型
4、字符数组转化为字符串
char[] c = {'a','s','d','4','5',};
String str = new String(c);
System.out.println(str);
5、字符数组转化为整型数组
char[] c = { '1', '2', '3', '4', '5', };
int[] a = new int[c.length];
for (int i = 0; i < 5; i++) {
a[i] = c[i] - '0';
System.out.println(a[i]);
}
6、整数型转化为字符型
1、String str = Integer.toString(i); 将整数型转换为字符型
2、String s = String.valueOf(i); 这个可以将double类型转换为字符型
3、String s = "" + i;
如果
String str1 = “ad45nfdf”;
则
str1.charAt(0) 是为 “a”;
str1.charAt(7)是为”f”;
三、字符串中的一些方法
1、indexof()
Java中字符串中子串的查找共有四种方法(indexof())
indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。
如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。
Java中字符串中子串的查找共有四种方法,如下:
① int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。
② int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
③ int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。
④ int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
应用到算法题目中。
题目:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
import java.util.*;
public class Solution {
public int FirstNotRepeatingChar(String str) {
for(int i = 0;i<str.length();i++){
if(str.indexOf(str.charAt(i))==i && str.indexOf(str.charAt(i),i+1)==-1) return i;
}
return -1;
}
}
解析:如果输入参数是 "google"
条件一:str.indexOf(str.charAt(i))==i 的作用是,是用第①种方法,能确定该字符是第一次出现。
条件二:str.indexOf(str.charAt(i),i+1)==-1 的作用是从第i+1个位置起找和i位置一样的字符,如果为-1,说明不存在。
如果没有条件一,返回值就是2,因为对于第二个o来说,它的后面没有o了。
如果没有条件二,返回值为0 ,因为对于第一个g来说,它是第一个g(即前面没有其他g)